/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucue.ptc.gco.ui;

//------
import edu.ucue.ptc.gco.mdl.Ciudad;
import edu.ucue.ptc.gco.ngc.CiudadManagerLocal;
import edu.ucue.ptc.gco.util.AtributoInvalidoException;
import edu.ucue.ptc.gco.util.ElementoYaExisteException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.el.ELContext;
import javax.el.ValueExpression;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import java.io.Serializable;
import javax.inject.Named;
import javax.enterprise.context.Dependent;
import javax.enterprise.context.SessionScoped;
import org.primefaces.context.RequestContext;
/**
 *
 * @author Fabian
 */
@Named(value = "ciudadAction")
@SessionScoped
public class CiudadAction implements Serializable {
    
    @Inject
    private CiudadManagerLocal ciudadManager;

    public Ciudad getCiudad() {
        return ciudad;
    }

    public List<Ciudad> getListaCiudad() {
        return listaCiudad;
    }

    public void setListaCiudad(List<Ciudad> listaCiudad) {
        this.listaCiudad = listaCiudad;
    }

    public void setCiudad(Ciudad ciudad) {
        this.ciudad = ciudad;
    }
    private boolean modoModificar = false;
    private Ciudad ciudad;
    private int idCiudad;
    private String nombre;
    private List<Ciudad> listaCiudad;

    public CiudadAction() {
        //ciudad = new Ciudad();
    }

    public static CiudadAction getInstance()
    {
        ELContext context = FacesContext.getCurrentInstance().getELContext();
        ValueExpression ex = FacesContext.getCurrentInstance().getApplication().getExpressionFactory().
                createValueExpression(context, "#{ciudadAction}", CiudadAction.class);
        return (CiudadAction)ex.getValue(context);
    }
    
  
    
        @PostConstruct
    public void init() {
        ciudad = new Ciudad();

        try {
            listaCiudad = ciudadManager.listarCiudades();
            //ciudad = ciudadManager.(LoginAction.getUsername(), LoginAction.getPassword());
            cargaLista();
        } catch (Exception ex) {
            Logger.getLogger(ProductoAction.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public String cancel() {
        return "index";
    }    
    
    public String eliminar(Ciudad ciudadMod) {
        try {
            //ciudadManager.(ciudadMod, LoginAction.getUsername(), LoginAction.getPassword());
            listaCiudad.remove(ciudadMod);
            RequestContext.getCurrentInstance().update("tablaP");
        } catch (Exception ex) {
            Logger.getLogger(CiudadAction.class.getName()).log(Level.SEVERE, null, ex);
        }        
        return "";
    }
    
    
    
    public String modificar(Ciudad ciudadMod) {
             ciudad = ciudadMod;
        modoModificar = true;
        return "ciudad";
               
    }
    
    public void cargaLista() {
        try {
            //listaCiudad = ciudadManager.listarTodos(LoginAction.getUsername(), LoginAction.getPassword() );
            listaCiudad = ciudadManager.listarCiudades();
       
        } catch (Exception ex) {
            Logger.getLogger(ProductoAction.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    
    
     public String guardar() {
        try {

       

            if (!modoModificar) {
               // ciudad.setNombre(nombre);
           
                //     ciudadManager.crear(ciudad, LoginAction.getUsername(), LoginAction.getPassword());
           
                ciudadManager.crearCiudad(ciudad);
            } else {
                //ciudadManager.actualizar(ciudad, LoginAction.getUsername(), LoginAction.getPassword());
                ciudadManager.actualizarCiudad(ciudad);
                
                RequestContext.getCurrentInstance().update("tablaP");
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(null, "Guardado"));
                return "listaCiudad";
            }
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(null, "Guardado"));
       } catch (Exception ex) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(null, ex.getMessage()));
            Logger.getLogger(ProductoAction.class.getName()).log(Level.SEVERE, null, ex);
        }
        return "";
    }

    
    public CiudadManagerLocal getCiudadManager() {
        return ciudadManager;
    }

    public void setCiudadManager(CiudadManagerLocal ciudadManager) {
        this.ciudadManager = ciudadManager;
    }

    public int getIdCiudad() {
        return idCiudad;
    }

    public void setIdCiudad(int idCiudad) {
        this.idCiudad = idCiudad;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    /**
     * Creates a new instance of CiudadAction
     */
}
